#########################################################
# 参数：
# arr: 一个数组
# start_index: 搜索的起点索引
# 返回值：
# 最后一个与arr[start_index]的值相等的元素索引
# 例: 如果arr = [6,6,7,7,7]，则find_last_of(arr, 2) == 4
#########################################################
def FindLastOf(arr, startIndex):
    lis = arr
    numInArr = startIndex
    firstNum = arr[numInArr]
    lst = lis[numInArr : ]
    downFind = -1
    for num in range(0, len(lst)):
        downFind += 1
        if downFind + 1 == len(lst):
            return len(lst) - 1
        elif lst[downFind + 1] != firstNum:
            return downFind

#########################################################
# 参数：
# arr: 一个数组
# 返回值：
# 在find_last_of的帮助下返回一个压缩列表
# 例: 如果arr = [6, 6, 10, 7, 7, 7]，则compress(arr) == [[2, 6], 10, [3, 7]]
#########################################################
def Compress(arr):
    con = 0
    down = -1
    List = []
    for i in arr:
        down += 1
        if con != 0:
            continue
        stopDown = FindLastOf(arr, i)
        con = stopDown - down + 1
        s = stopDown - down + 1
        List.append([s, arr[down - 1]])

Str = '1122334567775443'
a = [int(c) for c in Str]
b = Compress(a)
print(b)